
/*************************************************************************
  > File Name: in.cpp
  > Author: skt
  > Mail: sktsxy@gmail.com
  > Created Time: 2015年07月26日 星期日 16时26分35秒
 ************************************************************************/

#include <cstring>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <algorithm>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <complex>
#include <cassert>
// #pragma comment(linker,"/STACK:102400000,102400000")
using namespace std;
#define LL long long
#define pb push_back
#define mp make_pair
#define x first
#define y second
template <typename T> inline void checkMax(T &a, T b) {a = a>b?a:b;}
template <typename T> inline void checkMin(T &a, T b) {a = a<b?a:b;}
typedef pair<int, int> PII;
typedef vector<int> vi;
const double PI = acos(-1.0);
const double eps = 1e-8;
int N, M;

void work() {
	N = 100000, M = 3*N;
	printf("%d %d\n", N, M);
	for (int i = 1; i <= N; i ++) {
		int u = 1, v = i;
		printf("%d %d\n", u, v);
	}
	for (int i = 1; i <= N; i ++) {
		printf("%d %d\n", 2, i);
	}
	for (int i = 1; i <= N; i ++) {
		printf("%d %d\n", 3, i);
	}
}
int main() {
	srand(time(NULL));
	int T = 1;
	printf("%d\n", T);
	while (T --) {
		work();
	}
	return 0;
}
